//package com.gs.cd.service.old.controller;
//
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.gs.cd.service.resource.api.ResourceApi;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//
//import javax.validation.Valid;
//import javax.validation.constraints.Min;
//import java.util.List;
//import java.util.stream.Collectors;
//
///**
// * 角色管理
// *
// * @author hippo
// * @since 2020-02-12
// */
//@RestController
//@RequestMapping("/auth/role")
//@Validated
//public class RoleController {
//
//    @Autowired
//    ResourceApi resourceApi;
//
//    /**
//     * 查询列表
//     *
//     * @param role
//     * @return
//     */
//    @ResponseBody
//    @PostMapping("search/{pageNo}/{pageSize}")
//    public ApiResult search(@RequestBodyData Role role
//            , @PathVariable("pageNo") Integer pageNo
//            , @PathVariable("pageSize") Integer pageSize
//            , @RequestHeader(value = HttpHeadersParam.TENANT_CODE, required = false) String tenantCode
//    ) {
//        Page<Role> rolePage = new Page<>(pageNo, pageSize);
//
//        QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
//        if (StringUtils.isNotBlank(role.getRoleName())) {
//            queryWrapper.lambda().like(Role::getRoleName, role.getRoleName());
//        }
//        //category为空默认为租户级角色
//        if (role.getCategory() == null || "".equals(role.getCategory()) || RoleCategoryEnum.TENANT.getCategory().equals(role.getCategory())) {
//            queryWrapper.lambda()
//                    .eq(Role::getTenantCode, tenantCode)
//                    .orderByAsc(Role::getRoleSort)
//                    .orderByDesc(Role::getId);
//        } else {
//            queryWrapper.lambda()
//                    .eq(Role::getCategory, role.getCategory())
//                    .orderByAsc(Role::getRoleSort)
//                    .orderByDesc(Role::getId);
//        }
//
//        rolePage = (Page<Role>) roleService.page(rolePage, queryWrapper);
//
//        //设置角色成员数
//        if (role.getCategory() == null || "".equals(role.getCategory()) || RoleCategoryEnum.TENANT.getCategory().equals(role.getCategory())) {
//            rolePage.getRecords().forEach(role1 -> role1
//                    .setRoleUserCount(userOwnRoleService.countRoleUser(role1.getId(), tenantCode)));
//        } else {
//            rolePage.getRecords().forEach(role1 -> role1
//                    .setRoleUserCount(userOwnRoleService.countRoleUser(role1.getId())));
//        }
//
//        return ApiResult.success(rolePage.getCurrent(), rolePage.getSize(), rolePage.getTotal(), rolePage.getRecords());
//    }
//
//    /**
//     * 租户级角色-下拉列表
//     *
//     * @return list[角色id, 角色name]
//     */
//    @ResponseBody
//    @GetMapping("list")
//    public ApiResult list(@RequestHeader(HttpHeadersParam.TENANT_CODE) String tenantCode) {
//        List<Role> roles = roleService.list(
//                new QueryWrapper<Role>()
//                        .lambda()
//                        .select(Role::getId, Role::getRoleName, Role::getRoleCode)
//                        .eq(Role::getTenantCode, tenantCode)
//                        .eq(Role::getCategory, ResourceCategoryEnum.TENANT.getName())
//        );
//        return ApiResult.successList(roles
//                .stream()
//                .map(Role::convert2Vo)
//                .collect(Collectors.toList()));
//
//    }
//
//    /**
//     * 角色-角色-角色完整信息{包含完整资源组}
//     *
//     * @return
//     */
//
//    @ResponseBody
//    @GetMapping("whole/{roleId}")
//    public ApiResult roleWholeInfo(@PathVariable("roleId") @Min(value = 1, message = "角色id需大于0") Long roleId
//            , @RequestHeader(HttpHeadersParam.TENANT_CODE) String tenantCode) {
//        return ApiResult.success(roleService.getWholeInfo(roleId, tenantCode));
//    }
//
//
//    /**
//     * 新增or修改
//     *
//     * @param role
//     * @return
//     */
//
//    @ResponseBody
//    @PostMapping("coru")
//    @OperLog(operDesc = "角色修改或新增", operModul = "认证模块", operType = OperTypeEnum.Mod)
//    public ApiResult createOrUpdateRole(@Valid @RequestBodyData Role role
//            , @RequestHeader(HttpHeadersParam.TENANT_CODE) String tenantCode) {
//        roleService.createOrUpdateRole(role, tenantCode);
//        return ApiResult.success();
//    }
//
//    /**
//     * 删除角色
//     *
//     * @param roleId
//     * @return
//     */
//    @ResponseBody
//    @DeleteMapping("delete/{roleId}")
//    @OperLog(operDesc = "角色删除", operModul = "认证模块", operType = OperTypeEnum.Del)
//    public ApiResult deleteRole(@PathVariable("roleId") @Min(value = 1, message = "角色id需大于0") Long roleId) {
//        roleService.removeById(roleId);
//        return ApiResult.success("删除成功");
//    }
//
//    /**
//     * 调整排序
//     *
//     * @return
//     */
//    @ResponseBody
//    @PutMapping("sort/{roleId}/{sort}")
//    @OperLog(operDesc = "角色排序", operModul = "认证模块", operType = OperTypeEnum.Mod)
//    public ApiResult sortRole(
//            @PathVariable("roleId") @Min(value = 1, message = "角色id需大于0") Long roleId
//            , @PathVariable("sort") @Min(value = 1, message = "顺序号需大于0") Integer sort) {
//        Role role = roleService.getById(roleId);
//        if (null == role) {
//            return ApiResult.error("角色不存在");
//        }
//        role.setRoleSort(sort);
//        roleService.updateById(role);
//
//        return ApiResult.success();
//    }
//
//    /**
//     * 添加角色用户    系统级/租户级
//     *
//     * @param tenantCode
//     * @param roles
//     * @return
//     */
//
//
//    @PostMapping("addUser")
//    public ApiResult addUser(@RequestHeader(name = HttpHeadersParam.TENANT_CODE, required = false) String tenantCode,
//                             @RequestBody RolesAndUsersVO roles) {
//        userOwnRoleService.batchAddUserRoles(roles, tenantCode);
//
//        return ApiResult.success();
//    }
//
//    /**
//     * 删除角色用户    系统级/租户级
//     *
//     * @param tenantCode
//     * @param roles
//     * @return
//     */
//    @DeleteMapping("delUser")
//    public ApiResult delUser(@RequestHeader(name = HttpHeadersParam.TENANT_CODE, required = false) String tenantCode,
//                             @RequestBody RolesAndUsersVO roles) {
//        userOwnRoleService.batchDelUserRoles(roles, tenantCode);
//        return ApiResult.success();
//    }
//
//    /**
//     * 系统级角色列表查询
//     *
//     * @return
//     */
//    @GetMapping("sys/list")
//    public ApiResult listSysRoles() {
//        List<Role> roles = roleService.list(
//                new QueryWrapper<Role>()
//                        .lambda()
//                        .select(Role::getId, Role::getRoleName, Role::getRoleCode)
//                        .eq(Role::getCategory, ResourceCategoryEnum.SYSTEM.getName()));
//
//        return ApiResult.successList(roles
//                .stream()
//                .map(Role::convert2Vo)
//                .collect(Collectors.toList()));
//    }
//}
//
